package cn.lsh.kafka.db.dao;

import cn.lsh.kafka.db.entity.OffsetEntity;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * kafka偏移量(Offset)表数据库访问层
 *
 * @author makejava
 * @since 2020-12-08 14:33:12
 */
public interface OffsetMapper {

	/**
	 * 通过ID查询单条数据
	 *
	 * @param id 主键
	 * @return 实例对象
	 */
	@Select("SELECT * from offset where id = #{id}")
	OffsetEntity queryById(Integer id);

	@Select("SELECT * from offset where group_id = #{groupId} and topic = #{topic} and partition_id = #{partitionId}")
	OffsetEntity queryByCond(@Param("groupId") String groupId, @Param("topic") String topic, @Param("partitionId") int partitionId);

	/**
	 * 查询指定行数据
	 *
	 * @param offset 查询起始位置
	 * @param limit  查询条数
	 * @return 对象列表
	 */
	@Select("SELECT * from offset limit #{limit} offset #{offset}")
	List<OffsetEntity> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);

	/**
	 * 通过实体作为筛选条件查询
	 *
	 * @param offset 实例对象
	 * @return 对象列表
	 */
	List<OffsetEntity> queryAll(OffsetEntity offset);

	/**
	 * 新增数据
	 *
	 * @param offset 实例对象
	 * @return 影响行数
	 */
	@Insert("INSERT INTO offset(group_id,topic,partition_id,value,create_date,update_date) VALUES(#{groupId},#{topic},#{partitionId},#{value},#{createDate},#{updateDate})")
	int insert(OffsetEntity offset);

	/**
	 * 修改数据
	 *
	 * @param offset 实例对象
	 * @return 影响行数
	 */
	@Update("UPDATE offset SET value = #{value}, update_date=#{updateDate} where id = #{id}")
	int update(OffsetEntity offset);

	/**
	 * 通过主键删除数据
	 *
	 * @param id 主键
	 * @return 影响行数
	 */
	@Delete("DELETE FROM offset where id = #{id}")
	int deleteById(Integer id);

}
